package com.heima.article.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.heima.model.common.dtos.*;
import com.heima.model.common.dtos.ArticleDto;
import com.heima.model.common.dtos.ArticleHomeDto;
import com.heima.model.common.dtos.CommentPageDto;
import com.heima.model.common.dtos.NewsPageDto;
import com.heima.model.common.dtos.CommentDto;
import com.heima.model.common.dtos.ResponseResult;
import com.heima.model.common.pojos.article.ApArticle;
import com.heima.model.common.pojos.wemedia.WmNewsComment;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

/**
 * @author 陈辉
 * @data 2024 9:49
 */
public interface ApArticleService extends IService<ApArticle> {

    /**
     * 加载文章信息
     *
     * @param homeDto 查询条件
     * @param type 1：加载更多 2：加载更新
     * @return
     */
    ResponseResult load(ArticleHomeDto homeDto, int type);

    /**
     * 保存或修改文章信息
     *
     * @param articleDto
     * @return
     */
    ResponseResult saveOrUpdateArticle(ArticleDto articleDto);

    /**
     * 文章上下架
     *
     * @param map
     */
    void downOrUp(Map map);

    /**
     * 查询自媒体端文章信息
     * @param commentDto
     * @return
     */
    String selectNews(CommentDto commentDto);

    /**
     * 收藏文章
     * @param collectionBehaviorDto
     * @return
     */
    ResponseResult collection(CollectionBehaviorDto collectionBehaviorDto);

    /**
     * 文章数据回显
     * @param articleInfoDto
     * @return
     */
    ResponseResult loadArticleBehavior(ArticleInfoDto articleInfoDto);

    //加载文章列表
    ResponseResult getArticleList(CommentPageDto dto);

    /**
     * 分页查询文章列表
     *
     * @param newsPageDto
     * @return
     */
    ResponseResult newsPage(NewsPageDto newsPageDto);

    /**
     * 清空评论数量
     * @param commentDto
     */
    void deleteNews(CommentDto commentDto);

    /**
     * 添加评论数量
     * @param entryId
     */
    void saveComment(Long entryId);

    //热点文章计算
    void computeHotArticle();

    //首页加载热点文章
    ResponseResult loadHotArticle(ArticleHomeDto homeDto, int type);
}
